﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.GUI.Base;
using VentaElectrodomesticos.Negocio;
using VentaElectrodomesticos.Datos;
using VentaElectrodomesticos.Contrato;

namespace VentaElectrodomesticos.AbmRol
{
    public partial class FormRol : BaseEdicion<RolNegocio,RolDAO,Rol>
    {
        public FormRol()
        {
            InitializeComponent();
            this.listBoxFuncionalidad.DisplayMember = "Nombre";
            this.listBoxFuncionalidad.ValueMember = "Id";
            this.listBoxFuncionalidad.SelectionMode = SelectionMode.MultiSimple;
        }

        public void setFuncionalidades(List<Funcionalidad> funcionalidades) {
            listBoxFuncionalidad.DataSource = funcionalidades;
        }

        protected override void getValues()
        {
            this.Entity.nombre = this.textBoxNombre.Text;
            this.Entity.inactivo = this.checkBoxInactivo.Checked;
            List<Funcionalidad> funcionalidadesSeleccionadas = new List<Funcionalidad>();
            foreach (Funcionalidad funcionalidad in this.listBoxFuncionalidad.SelectedItems)
            {
                funcionalidadesSeleccionadas.Add(funcionalidad);
            }
            this.Entity.__funcionalidades = funcionalidadesSeleccionadas;
        }

        protected override void setValues()
        {
            this.textBoxNombre.Text = this.Entity.nombre;
            this.checkBoxInactivo.Checked = this.Entity.inactivo;

            this.listBoxFuncionalidad.SelectedItems.Clear();
            if (this.Entity.__funcionalidades != null) 
            {
                foreach (Funcionalidad funcionalidad in this.Entity.__funcionalidades)
                {
                    for (int i = 0; i < this.listBoxFuncionalidad.Items.Count; i++)
                    {
                        if (funcionalidad.Id == ((Funcionalidad)this.listBoxFuncionalidad.Items[i]).Id)
                            this.listBoxFuncionalidad.SetSelected(i, true);
                    }
                }
            }            
        }
        public override void changeLayout(bool edit)
        {
            base.changeLayout(edit);
            panelEdicion.Visible = edit;
        }
        protected override void cumpleValidaciones()
        {
            if (this.listBoxFuncionalidad.SelectedItems.Count < 1) {
                this.Errores.Add("Los roles no son validos.");
            }

            if (!RegCondition.Condition(textBoxNombre, RegCondition.RegularExpressions.Alphabet))
                this.Errores.Add("El nombre no es válido");
        }
    }
}
